Linux capability 管理

查看当前 capability

使用 capsh 命令可以输出当前环境的 capability,可以重点关注 Current IAB 禁用的 capability:

~# capsh --print
Current: =ep cap_sys_module,cap_sys_rawio,cap_sys_time,cap_mac_override,cap_mac_admin-ep
Bounding set =cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read,cap_perfmon,cap_bpf,cap_checkpoint_restore
Ambient set =
Current IAB: !cap_sys_module,!cap_sys_rawio,!cap_sys_time,!cap_mac_override,!cap_mac_admin
Securebits: 00/0x0/1'b0
 secure-noroot: no (unlocked)
 secure-no-suid-fixup: no (unlocked)
 secure-keep-caps: no (unlocked)
 secure-no-ambient-raise: no (unlocked)
uid=0(root) euid=0(root)
gid=0(root)
groups=0(root)
Guessed mode: UNCERTAIN (0)

也可以使用 getpcaps 命令查看指定进程 PID 的 capability:

~# getpcaps 1
1: =ep cap_sys_module,cap_sys_rawio,cap_sys_time,cap_mac_override,cap_mac_admin-ep

capability 值

查看指定进程的 capability 值:

~# grep Cap /proc/self/status
CapInh: 0000000000000000
CapPrm: 000001fcfdfcffff
CapEff: 000001fcfdfcffff
CapBnd: 000001fcfdfcffff
CapAmb: 0000000000000000

capsh 命令还可以用来解码 capability 值,例如显示上面的 CapEff 值:

~# capsh --decode=000001fcfdfcffff
0x000001fcfdfcffff=cap_chown,cap_dac_override,cap_dac_read_search,cap_fowner,cap_fsetid,cap_kill,cap_setgid,cap_setuid,cap_setpcap,cap_linux_immutable,cap_net_bind_service,cap_net_broadcast,cap_net_admin,cap_net_raw,cap_ipc_lock,cap_ipc_owner,cap_sys_chroot,cap_sys_ptrace,cap_sys_pacct,cap_sys_admin,cap_sys_boot,cap_sys_nice,cap_sys_resource,cap_sys_tty_config,cap_mknod,cap_lease,cap_audit_write,cap_audit_control,cap_setfcap,cap_syslog,cap_wake_alarm,cap_block_suspend,cap_audit_read,cap_perfmon,cap_bpf,cap_checkpoint_restore